import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
/**
 * state 存放状态
 * mutations state成员操作
 * getters 加工state成员给外界 => state 当前VueX对象中的状态对象
								  getters 当前getters对象，用于将Getters(store中的属性)下的其他getter(方法)拿来用
 * actions 异步操作 => context 上下文(相当于箭头函数中的this)对象    payload 挂载参数
 * modules 模块化状态管理 可以多个模块
 */

const store = new Vuex.Store({
	state: {
		name: 'hi,zhuli',
		age: 30,
		hasLogin: false,
		userInfo: {},
		color: '#e15852',//全局颜色
		Btntitle: '立即购买',//
		couponNumber: 0,
		cardNumber: 0,
	},
	mutations: {
		login(state, provider) {
			// Vue.set(state,'age',15)
			state.hasLogin = true;
			state.userInfo = provider;
			uni.setStorage({//缓存用户登陆状态
			    key: 'userInfo',  
			    data: provider  
			}) 
			console.log(state.userInfo);
		},
		logout(state) {
			state.hasLogin = false;
			state.userInfo = {};
			uni.removeStorage({  
				key: 'userInfo'  
			})
		},
		test(state,age){
			console.log(age)
			state.age = age;
			return 'dsfasdfs:'+age;
		},
		//控制颜色
		modifyColor(state,color){
			state.color = color;
		},
		//积分中按钮的title值
		shoppCart(state,title){
			state.Btntitle = title;
		},
		//可使用优惠劵的数量
		onCoupon(state,number){
			state.couponNumber = number;
		},
		//可使用次卡的数量
		onCard(state,number){
			state.cardNumber = number;
		},
	},
	getters:{//this.$store.getters.userInf 调用
		nameInfor(state){
			return state.name;
		},
		userInf(state,getters){
			return getters.nameInfor+'年龄:'+state.age
		}
	},
	actions: {
		// this.$store.dispatch('atest',15).then(res=>console.log(res))
		atest(context,payload){
			return new Promise((resolve,reject)=>{
				// setTimeout(()=>{
					resolve(context.commit('test',payload));
				// },600)
			})
		}
	},
	modules:{}
})

export default store
